# 作者: 陈其志
# 2025年02月18日16时38分51秒
# 2716847110@qq.com

def hw_2():
    """
    自己定义变量赋值不同的数据类型并打印，并使用type
    :return:
    """
    a = int(1)
    print(f"a的值是{a}，类型是{type(a)}")
    b = float(1.5)
    print(f"b的值是{b}，类型是{type(b)}")
    c = str('asdfg')
    print(f"c的值是{c}，类型是{type(c)}")
    d = [1, 2, 3]
    print(f"d的值是{d}，类型是{type(d)}")
    e = ([1, 2], [3, 2], [4, 5])
    print(f"e的值是{e}，类型是{type(e)}")
    f = {(1, 2): 1, (2, 2): 2}
    print(f"f的值是{f}，类型是{type(f)}")


def hw_3():
    """
    能够将整型转为不同进制，进行输出
    :return:
    """
    i = 2025
    print(oct(i))
    print(bin(i))
    print(hex(i))


def hw_4():
    """
    从1到100之间的奇数求和
    :return:
    """
    print(sum([x for x in range(1, 101) if x % 2 == 1]))


def hw_5():
    """
    九九乘法表
    :return:
    """
    for i in range(1, 10):
        for j in range(1, i + 1):
            print(f'{j}*{i}={j * i:<3d}', end='')  # <是左对齐
        print()


def hw_6():
    """
    统计一个整数对应的二进制数的1的个数。输入一个整数（可正可负，负数就按64位去遍历即可）， 输出该整数的二进制包含1的个数（使用位运算）
    解法2
    :return:
    """
    num = int(input('请输入一个整数'))
    count = 0  # 记录bit中1的个数
    check_flag = 1
    for i in range(64):
        if num & check_flag:
            count += 1
        check_flag <<= 1
    print(count)


if __name__ == '__main__':
    # hw_2()
    # hw_3()
    # hw_4()
    # hw_5()
    hw_6()
